package com.nanbei.sort;

import java.math.BigInteger;

/**
 * @ClassDescription: 排序算法
 * @JdkVersion: 1.8
 * @Author: libs
 * @Created: 2024/6/25 11:11
 */
public class Sort {

    /**
     * 冒泡排序
     * @param nums 需要排序的数
     * @return 排序后的数组
     */
    public static int[] bubbling(int[] nums){

        int index = nums.length;
        while (index-- >1){
            int i = 0;
            // 用变量x 来记录最后一次交换的下标，如过后面没有发生变化则证明下标后的数据已经排好序
            int x = 0;
            for (int j = i; j < index; j++) {
                int jp= j+1;
                if (nums[j] > nums[jp]){
                    x = j;
                    swap(nums, jp, j);
                }
            }
            index =x;
        }

        return nums;
    }

    /**
     * 排序选择
     * 每一轮选择，找出最大（最小）的元素，并把它交换到合适的位置
     * @param nums 需要排序的数
     * @return 排序后的数组
     */
    public static int[] selection(int[] nums){
        int length = nums.length;
        for (int i = length-1; i >0; i--) {
            int max = i;
            for (int j = 0; j < i; j++) {
                if (nums[j] > nums[max]){
                    max = j;
                }
            }
            if (max != i){
                swap(nums,max,i);
            }
        }

        return nums;
    }


    public static void swap(int[] nums , int i, int j){
        int num = nums[i];
        nums[i] = nums[j];
        nums[j] = num;
    }

}
